/*
 * Mutex.h
 *
 *  PEREIRA, FERNANDO ROQUE
 *  91610
 *
 *  Entidad que encapsula las funcionalidades basicas de un mutex
 *  Se utilizara para bloquear recursos compartidos entre distintos hilos
 */

#ifndef MUTEX_H_
#define MUTEX_H_

#include <pthread.h>
#include <iostream>

class Mutex {
	pthread_mutex_t mutex;
	pthread_cond_t conditionVariable;

	public:
		Mutex();
		virtual ~Mutex();

		// Funcionalidades basicas del mutex
		void lockMutex();
		void unlockMutex();
		void wait();
		void signal();

		friend class Lock;
};

#endif
